1 创建一个基于对话框的工程,工程名称为MultiTab,向主对话框添加一个标签控件。

2 为标签控制关连变量:

CTabCtrl m_Tab;

3 创建两个对话框类CBookInfo和CBookDelte,类型为子窗口风格;

4 在MultiTabDlg.h引用两个子窗口,引用两个类的头文件及分别定义类对象:

#include "BookInfo.h"

#include "BookAdd.h"

class CMultiTabDlg : public CDialog

{

// Construction

public:

CMultiTabDlg(CWnd* pParent = NULL); // standard constructor

CBookInfo m_BookInfo;

CBookDelete m_BookDelete;

……

4 在主对话框初始化时(OnInitDialog方法中)向标签控件中添加上述的两个子对话框

//向标签控件中添加选项卡
m_Tab.InsertItem(0, "图书基础信息", 0);
m_Tab.InsertItem(1, "图书信息删除", 1);

//创建子窗口

m_BookInfo.Create(IDD_BOOKINFO_DIALOG, &m_Tab);

m_BookDelete.Create(IDD_BOOKADD_DIALOG, &m_Tab);

CRect clientRC;

m_Tab.GetClientRect(clientRC); //获取标签客户区域

clientRC.DeflateRect(2, 30, 2, 2); //减少客户区域大小

m_BookInfo.MoveWindow(clientRC); //移动子窗口

m_BookDelete.MoveWindow(clientRC); //移动子窗口

m_BookInfo.ShowWindow(SW_SHOW); //显示子窗口

m_Tab.SetCurSel(0); //设置默认选中的标签页

 

5 处理标签控件的TCN_SELCHANGE消息,该消息在用户改变当前选中的标签而时触发,在消息处理函数中根据当前的标签页索引显示和隐藏相应的子窗口。

void CMultiTabDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)

{
int nCurSel = m_Tab.GetCurSel();
if (nCurSel == 0)
{
m_BookInfo.ShowWindow(SW_SHOW);
m_BookDelete.ShowWindow(SW_HIDE);

}

else if (nCurSel == 1)

{

m_BookDelete.ShowWindow(SW_SHOW);

m_BookInfo.ShowWindow(SW_HIDE);

}

*pResult = 0;

}